/*
焦点图轮换
http://code.ciaoca.cn/
日期：2011-11-29

settings 参数说明
-----
events:按钮事件
type:轮换类型
speed:切换速度
time:自动轮换间隔时间
btn:是否使用数字切换按钮
plus:是否使用plus按钮
minus:是否使用minus按钮
------------------------------ */
(function($){
	$.fn.slideShow=function(settings){
		if(this.length<1){return;};

		// 默认值
		settings=$.extend({
			events:"click",
			type:"transparent",
			speed:800,
			time:5000,
			btn:true,
			plus:false,
			minus:false
		},settings);

		var slide_obj=this;
		var slide_list=slide_obj.find("ul.list");
		var slide_array=slide_list.find("li");
		var slide_sum=slide_array.length;
	
		var slide_old,slide_new,slide_width,slide_height,btn_obj,btn_array,slide_plus,slide_minus;
		var slide_first,slide_pic,slide_html,slide_run;
	
		// 显示第1张幻灯片
		slide_first=slide_array.first();
		slide_pic=slide_first.find("img");
		slide_obj.prepend("<div class='old'>"+slide_first.html()+"</div><div class='new'></div>");

		slide_old=slide_obj.find("div.old");
		slide_new=slide_obj.find("div.new");
		slide_width=slide_old.find("img").outerWidth();
		slide_height=slide_old.find("img").outerHeight();

		// 添加切换按钮
		if(slide_sum>1){
			if(settings.btn&&slide_obj.find("ul.btn").length<=0){
				slide_html="";
				for(var i=1;i<=slide_sum;i++){
					slide_html+="<li class='b_"+i+"'>"+i+"</li>";
				};
				slide_html="<ul class='btn'>"+slide_html+"</ul>";
			};

			if(settings.plus&&slide_obj.find(".plus").length<=0){
				slide_html+="<a class='plus'></a>";
			};

			if(settings.minus&&slide_obj.find(".minus").length<=0){
				slide_html+="<a class='minus'></a>";
			};

			slide_obj.append(slide_html);
				
			btn_obj=slide_obj.find("ul.btn");
			btn_array=btn_obj.find("li");
			// 点亮第1个按钮
			btn_array.removeClass("selected");
			btn_array.first().addClass("selected");

			slide_plus=slide_obj.find(".plus");
			slide_minus=slide_obj.find(".minus");
			
		}else{
			if(slide_obj.find("ul.btn").length>0){slide_obj.find("ul.btn").hide();}
			return;
		};
		
		if(settings.type=="horizontal"){
			slide_list.css("width",slide_width*slide_array.length).appendTo(slide_new).show();
			slide_new.show();
		}else if(settings.type=="vertical"){
			slide_list.appendTo(slide_new).show();
			slide_new.show();
		};
	
		var scrollAuto=function(){
			slide_run=setInterval(function(){
				var slide_now=btn_array.index(btn_array.filter(".selected"));
				slideStart(slide_now,slide_now+1);
			},settings.time);
		};

		// 轮换过程
		var slideStart=function(now,num){
			if(num>=slide_sum){num=0};
			if(num<0){num=slide_sum-1};
			btn_array.removeClass("selected");
			btn_array.eq(num).addClass("selected");

			var location_a,location_b;
			switch(settings.type){
				// 透明过渡
				case "transparent":
					slide_new.stop(true,true).html(slide_array.eq(num).html()).fadeIn(settings.speed,function(){
						slide_old.html(slide_new.html());
						slide_new.hide();
					});
					break;
				// 水平滚动
				case "horizontal":
					slide_list.css("width",slide_width*slide_array.length);
					slide_list.stop(true,false).animate({"left":-(slide_width*num)},settings.speed);
					break;
				// 垂直滚动
				case "vertical":
					slide_list.stop(true,false).animate({"top":-(slide_height*num)},settings.speed);
					break;
			};
		};
	
		// 添加按钮切换事件
		if(settings.btn){
			btn_array.bind(settings.events,function(){
				if(typeof(slide_run)!="undefined"){clearInterval(slide_run);};
				if($(this).hasClass("selected")){return;};
				slideStart(btn_array.index(btn_array.filter(".selected")),btn_array.index($(this)));
				scrollAuto();
			});
		};
			
		if(settings.plus){
			slide_plus.bind(settings.events,function(){
				if(typeof(slide_run)!="undefined"){clearInterval(slide_run);};
				var slide_now=btn_array.index(btn_array.filter(".selected"));
				slideStart(slide_now,slide_now-1);
				scrollAuto();
			});
		};
			
		if(settings.minus){
			slide_minus.bind(settings.events,function(){
				if(typeof(slide_run)!="undefined"){clearInterval(slide_run);};
				var slide_now=btn_array.index(btn_array.filter(".selected"));
				slideStart(slide_now,slide_now+1);
				scrollAuto();
			});
		};

		// 开始自动轮换
		scrollAuto();

		// 重新获取图片的高宽
		slide_pic.load(function(){
			slide_width=$(this).outerWidth();
			slide_height=$(this).outerHeight();
		});
	};
})(jQuery);